﻿using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using AssemblyCSharp;
using System.Collections.Generic;


public class RulePanelScript : MonoBehaviour {
	public List<GameObject> titleImags;
	private List<string> ruleContents;
	public Text ruleContent;
	private int currentIndex = 0;

	void Start () {
		ruleContents = new List<string> ();
		ruleContents.Add ("转转规则\n\n玩法介绍和扣分规则：\n\n无大小胡之分，任意一对可做将， 不能吃，只能碰，牌整了就可胡，有一个规则（很重要：在一圈内（这里的一圈标识一人抓了一次牌）如若A玩家听牌胡 二 五条 ，B玩家打出 二五条此时A玩家没有选择胡牌，那么在这一圈内，C D玩家如果也打得出二五条，A玩家不能胡牌，直到A玩家下一次摸牌后（自摸可以）， 此时有人打了就可以胡了，如若又没胡，那么在这一圈内 其他玩家打的也不能胡）\n扣分： 点炮-1 点杠-3，明杠各家-1，暗杠各家-2，自摸各家-2.（杠和胡牌的分数是累加的，有杠的玩家不管这把牌胡没胡分数都得算在这把的结算里）\n\n是否自摸胡（表示是否自能是自摸，玩家点炮不能胡）\n是否抢杠胡 （标识是否可抢明杠胡，别的玩家明杠，其他玩家若听牌胡此牌则可抢胡，明杠就不算了，暗杠不能抢胡）\n是否红中赖子（胡牌时红中可当任意牌使用，但不能与其他牌组合杠，如一个红中一个六筒不能碰6筒，纯红中的话可碰可杠（一般没有玩家会这么做））\n是否抓码  （可选择2 4 6个码，即胡牌的玩家最后可抓牌的数量，如果所剩的牌少于设置的抓码数量，则抓剩余的数量， 159，自己，26下家，37，对家，48上家，举例A玩家自摸其他各玩家-2，此房间设置的抓马数量是2，则最后抓两张牌，一个1和7， 1代表中自己（各家再-2），7是对家（对家再-2），即对家-6，其他玩家-4.）选择红中赖子的话设置了抓码的话只有1，5，9，红中，中码。\n（红中赖子玩法只可自摸或者抢杠胡，所以1，5，9，红中只会是自己，当选择红中赖子玩法时胡牌的时候没有红中赖子可以多抓一个码）。");
		//ruleContents.Add ("转转麻将：\n\n创建房间可选信息：\n1，局数：4局（1张房卡）  8局（2张房卡）  16局（4张房卡）\n2，玩法选择：\n      1，是否自摸胡\n      2，是否抢杠胡 \n      3，是否红中赖子\n      4，是否可胡七小对\n      5，是否抓码\n\n备注：以上各选项都是（非必选）可选可不选的。 但1和2不能同时选（从字面上便可知相互冲突）。\n\n\n\n\n玩法介绍和扣分规则：无大小胡之分，任意一对可做将， 不能吃，只能碰，牌整了就可胡，有一个规则（很重要：在一圈内（这里的一圈标识一人抓了一次牌）如若A玩家听牌胡 二 五条 ，B玩家打出 二五条此时A玩家没有选择胡牌，那么在这一圈内，C D玩家如果也打得出二五条，A玩家不能胡牌，直到A玩家下一次摸牌后（自摸可以）， 此时有人打了就可以胡了，如若又没胡，那么在这一圈内 其他玩家打的也不能胡）\n扣分： 点炮-1 点杠-3，明杠各家-1，暗杠各家-2，自摸各家-2.（杠和胡牌的分数是累加的，有杠的玩家不管这把牌胡没胡分数都得算在这把的结算里）\n\n是否自摸胡（表示是否自能是自摸，玩家点炮不能胡）\n是否抢杠胡 （标识是否可抢明杠胡，别的玩家明杠，其他玩家若听牌胡此牌则可抢胡，明杠就不算了，暗杠不能抢胡）\n是否红中赖子（胡牌时红中可当任意牌使用，但不能与其他牌组合杠，如一个红中一个六筒不能碰6筒，纯红中的话可碰可杠（一般没有玩家会这么做））\n是否抓码  （最多设置不超过10，即胡牌的玩家最后可抓牌的数量，如果所剩的牌少于设置的抓码数量，则抓剩余的数量， 159，自己，26下家，37，对家，48上家，举例A玩家自摸其他各玩家-2，此房间设置的抓马数量是2，则最后抓两张牌，一个1和7， 1代表中自己（各家再-2），7是对家（对家再-2），即对家-6，其他玩家-4.）\n");
		ruleContents.Add ("长沙麻将：\n\n创建房间可选信息：\n1，局数：4局（1张房卡）  8局（2张房卡）  16局（4张房卡）\n2，玩法选择：\n        1，是否区分庄闲：\n\t2，是否抓码（可设置个数）  备注：长沙麻将输赢分数波动叫大，最大抓码个数不能超过4个\n\n摸牌规则\n游戏在一开始，只有庄家可得到十四张牌，其余的人十三张。庄家从牌中选出一张最无用的牌丢出。此时，其它三家都有权力要那张丢出的牌。庄家的下家（右手边的玩者），有权力吃或碰那张牌，其它两家则只可碰或杠那张牌。 “ 碰 ” 比 “ 吃 ” 优先。\n\n庄家确定\nA 、第一局由系统随机分配庄家。\nB 、以后谁胡牌，下局谁做庄。\nC 、如果有人要了海底牌后却没人胡，则要海底牌的玩家下局当庄家。\nD 、如果四个玩家都不要海底牌，则下轮由第一个可以选择海底牌的玩家当庄家。\nE 、如果此局无海底牌（即海底牌被补张），则补海底牌的玩家下局当庄家。\nF ：如果出现通炮，则下轮由放炮玩家当庄家。\nG ：如果起手后，出现 2 个或 2 个以上的玩家胡（即天胡、四喜、六六顺、缺一色、板板胡五种牌型）则中鸟的玩家下局当庄家。\n\n小胡：\n起手胡：\n1 、大四喜：起完牌后，玩家手上已有四张一样的牌，即可胡牌。（四喜计分等同小胡自摸）\n2 、板板胡：起完牌后，玩家手上没有一张 2 、 5 、 8 （将牌），即可胡牌。（等同小胡自摸）\n3 、缺一色：起完牌后，玩家手上筒、索、万任缺一门，即可胡牌。（等同小胡自摸）\n4 、六六顺：起完牌后，玩家手上已有 2 个刻子（刻子：三个一样的牌），即可胡牌。（等同小胡自摸）\n\n平胡： 必须2 、 5 、 8 作将，其余成刻子或顺子或一句话，即可胡牌。\n\n备注：起手胡胡了玩家只需明牌一圈起手胡所需的牌 的内容。直到第二次摸牌。\n\n大胡：\n\n1 、天胡：单指庄家。庄家起牌后，即已经胡牌。\n2 、地胡：指闲家。当庄家打出第一张牌时，给闲家点炮。\n3 、碰碰胡：乱将，即表示任意数字的牌张都可以做将，可以是二五八数目牌做将，也可以是一三四六七九数目牌做将，以下乱将皆为此意。可碰，可杠，可自摸。\n4 、将将胡：玩家手上每一张牌都为 2 、 5 、 8 ，可碰。\n5 、清一色：乱将，有筒、索、万三种。任意一种胡牌规则皆可，可吃可碰，如果胡牌规则为大胡，则在原有大胡基础上再翻一倍。\n6 、海底捞月：最后一张牌为海底。海底胡牌，为大胡，需要将（将的种类根据当前牌型决定）。说明：长沙麻将中，海底牌可漫游。即轮到第一个玩家摸，他不要，则按照次序第二个玩家可要，依此类推。\n7 、海底炮：如果甲玩家要了海底，而又不能胡牌；乙玩家没有要得到海底，而又可以胡这张海底牌，即为乙玩家胡牌。同样如果丙和丁能胡则通胡。\n8 、七小对：胡牌时，手上任意七对牌。\n9、豪华七小对： 胡牌时，手中任意五对牌，以及有四张一样的牌。\n10、杠上开花：玩家有四张一样的牌，即可选择开杠掷骰子（听牌的情况下）或者补张  掷色子可以摸两张，并且不管听没听都不能再换手里的牌了，抓啥打啥，  补张的只能摸一张，可换牌。。。补张牌的计数方法为：从最后一张牌抓， 掷色子的牌，骰子开几点，即取倒数第几叠牌的连续两张（如最上一张没有则取下方一张）。一旦补张的牌能被开杠者胡则算大胡。\n11 、抢杠胡：暗杠不能抢杠胡， 只有明杠可以抢胡。玩家在明杠的时候，其他玩家可以胡被杠的此张牌，叫抢杠胡；\n12 、杠上炮：如果开杠者掷骰子补张，补张的牌开杠者若不能胡而其他玩家可以胡属于杠上炮，若胡，则属于杠上开花。\n13、全求人：吃、碰、补张以及杠后只剩一张（熟称单调）由别人打出或者自己摸到相同牌张即可胡牌。\n\n备注：  大胡可乱将胡，但杠上开花 杠上炮，抢杠胡都需要2 5 8 做将，除非本身就是大胡了。\n\n\n小胡自摸  各家-2\n小胡捉炮  点炮方-1，\n大胡自摸  各家-6\n大胡点炮  点炮方-6，\n\n备注：\n1，小胡与小胡可累加（如四喜+六六顺 2+2），大胡和大胡之前也可累加（如小七对+清一色 6+6）。\n2，若创建房间设置了区分庄闲则庄家在计算加输赢时需要 多加 或 多减 1分。庄闲分不累加，只计算1次。\n3，抓码，及胡牌的玩家可摸设置创建房间时设置的抓码数量的牌数，（159自己，2，6，下家，48上家，27对家，中了谁则谁需要多给一倍原本计算的分数，庄闲分不算入内）。例如玩家A为庄， 捉炮胡了一把（六六顺+小七对+清一色 2+6+6）， 点炮方为玩家C，是A的对家，B为A的上家，D为A的下家，  如果抓码数量是2，  扔出的骰子为 4（中上家）和7（中对家）  C所扣除的分数为（2+6+6）+（2+6+6）+1 = 29， B扣除的为 2 + 2 +1 = 5（2分起手胡的分数） ， D扣除的分数为 2 +1 =3\n\n\n\n\n");
		ruleContents.Add ("划水规则\n\n\n玩法介绍和扣分规则：\n\n任意一对可做将， 不能吃，只能碰，牌整了就可胡。\n\t1，跟庄：抓牌起的第一圈，庄家出的第一张牌，其他各玩家跟出相同的牌，庄家-3，其他各家+1. 例如庄家出5条，其他三家都打的5条。 注意此规则仅仅在第一圈有效。（牌局无论最后谁胡了或者流局都需要结算）\n\t2，小胡点炮 点炮者-3分\n\t3，小胡自摸 各家 -2，自摸者+6.\n\t4，大胡自摸：翻3番， 大胡包括七小对和杠上开花。 玩家 扣分 -2*3扣6分。 自摸家赢6*3=18分。 (实际相当于普通自摸*3倍)\n\t5，大胡捉炮：翻3番， 大胡包括七小队和抢杠胡。  玩家扣分 -3*3扣9分。  （实际相当于普通捉炮*3）。\n\t6，明杠各家-1， 暗杠各家-2， 玩家点杠-3（牌局无论最后谁胡了或者流局都需要结算）\n\n\n\n注意：带鱼数不参与翻番，即在原有需要扣除的分数上 加上带鱼条数*2就为实际所扣除的（乘以2是因为下鱼2条相当于各个玩家身上都有2条）\n例如， 七小对自摸下雨5条 输家各家扣除2*3+5*2=16分，  七小对捉炮： 相当于输家扣除 3*3+5*2=19分");
		ruleContent.text = ruleContents[0];
		//ruleContents.Add ("划水麻将：\n\n创建房间可选信息：\n1，局数：4局（1张房卡）  8局（2张房卡）  16局（4张房卡）\n2，玩法选择：\n      1，是否要风牌\n      2. 是否自模糊\n3.多选项（可不选）1.下两条鱼    2.下5条鱼      3.下8条鱼\n下鱼算法：\n自摸\t4番（其他三家每家出4番）加四家总下鱼数\n普通点炮\t5番（谁放炮谁出番）加两家（放炮和胡家）下鱼数\n\t\n其它不变\n备注：以上各选项都是（非必选）可选可不选的。\n游戏规则\n编辑\n牌数：共136张牌，不带花，万、筒、条从1——9，东、西、南、北、红中、白板、发财。\n人数：满4人开始游戏。\n发牌：从庄家开始发起，逆时针顺序，庄家开始拿14张牌，其他玩家13张牌。系统掷骰子，2个骰子加起来的点数确定开门的地方，2个骰子中最小点数确定剩下多少墩开始拿牌。(从左往右空过去多少墩开始拿牌)。\n选庄：首局，随机确认庄家；从第二局开始，上一局谁胡牌谁坐庄（若一炮多响时，放炮者坐庄），若流局，则上一局的庄家继续坐庄。\n打法：只可碰，可杠，可抓炮，不可吃牌。\n胡牌牌型：\n胡牌者的牌型必须具备下列牌型之一：\n（1）11 、 123 、 123 、 123 、 123\n（2）11 、 123 、 123 、 123 、 111(1111 ）\n（3）11 、 123 、 123 、 111 、 111(1111 ）\n（4）11 、 123 、 111 、 111 、 111(1111 ）\n（5）11 、 111 、 111 、 111 、 111(1111 ）\n（6）11、11、11、11、11、11、11（7对不同的牌为七对）\n（7）1111 、11 、11 、11、 11 、11 （这种也算胡）\n（8）1111、1111、11、11、11（这种也算对胡）\n(9)1111 1111 1111 11(也算对胡）\n其中 6 - 9的所有牌型 都属于对胡，都是三番。\n游戏术语\n碰，指其他三个玩家出的牌可以凑成111牌型。\n跟庄（随牌），指开始出牌时，庄家出的第一张牌，其他三个玩家都出与庄家一样的牌。\n过路杠，指玩家碰牌后又自己摸到一张凑成杠。\n暗杠，指玩家自己摸到四张一样的牌。注：暗杠的牌需翻一张让其他玩家看到。\n放杠，指玩家自己有三张一样的牌，有其他玩家出了第四张牌。\n自摸，自己摸到自己要胡的牌。\n点炮，有玩家出的牌刚好是另外玩家所要胡的牌。\n杠开，自己杠牌后摸起的那张牌组成的胡牌即为杠开。\n抢杠，玩家碰牌后，当其摸到第四张同一牌准备作明杠时，被其他玩家抢先胡牌。\n流局，指牌都被摸完了没有玩家胡牌。\n计分规则\n番型\t番数\n跟庄\t1番（庄家出3番，其他每人得1番）\n过路杠\t1番\n暗杠\t2番\n放杠\t3番（谁放牌谁出番）\n自摸\t4番（其他三家每家出4番）\n普通点炮\t5番（谁放炮谁出番）\n七对点炮\n5*3番（谁放炮谁出番）\n七对自摸\t4*3番（其他三家每家出12番）\n杠开\t4*3番（其他三家每家出12番）\n抢杠\t5*3番（谁要杠牌谁出番）\n一炮双响\t根据胡牌者的牌型来计算放炮者出的番数（胡牌两方所胡牌型的番数相加）\n一炮三响\t根据胡牌者的牌型来计算放炮者出的番数（同上）\n注：若流局（黄牌）的情况，所有玩家既不得分也不失分。\n特殊规则\n1、滑水麻将没有“听”的功能。\n2、若一炮多响时，系统判断有2个或3个玩家可以胡此牌，则改玩家有10秒（可配置）时间选择是否胡牌，其他玩家等待，若超时未选择，则默认放弃胡牌。\n3、结算的番数要求可配置。\n4、如果有人打出放胡的牌，自己没有选择胡牌，那么这一圈其他人跟着打出这张牌自己也不能胡。必须要等轮到自己打牌之后再有其他人打出，方可胡牌\n\n");
	}
	
	// Update is called once per frame
	void Update () {
	
	}

	public void closeDialog(){
		RulePanelScript self = GetComponent<RulePanelScript> ();
		for (int i = 0; i < titleImags.Count; i++) {
			GameObject item = titleImags [i];
			Destroy (item);
		}
		Destroy (self.ruleContent);

		self = null;
		Destroy (this);
		Destroy (gameObject);
	}

	public void ruleUp(){
		if (currentIndex > 0) {
			titleImags [currentIndex - 1].SetActive (true);
			titleImags [currentIndex].SetActive (false);
			ruleContent.text = ruleContents [currentIndex - 1];
			currentIndex -= 1;

		}
	}
	public void ruleDown(){
		if (currentIndex <titleImags.Count-1) {
			titleImags [currentIndex +1].SetActive (true);
			titleImags [currentIndex].SetActive (false);
			ruleContent.text = ruleContents [currentIndex + 1];
			currentIndex += 1;

		}
	}

}
